import java.util.LinkedHashSet;

/**
 * DuplicateRemover 类 - 去重处理器
 * 移除重复元素，使用 LinkedHashSet 保持插入顺序
 */
public class DuplicateRemover<T> implements DataProcessor<T> {

    /**
     * 无参构造方法
     */
    public DuplicateRemover() {
    }

    /**
     * 处理数据容器，移除重复元素
     * 使用 LinkedHashSet 保持插入顺序
     * 
     * @param input 输入的数据容器
     * @return 去重后的新容器
     */
    @Override
    public DataContainer<T> process(DataContainer<T> input) {
        // 使用 LinkedHashSet 去重并保持顺序
        LinkedHashSet<T> uniqueSet = new LinkedHashSet<>();
        for (int i = 0; i < input.size(); i++) {
            uniqueSet.add(input.get(i));
        }

        // 创建新容器并添加去重后的元素
        DataContainer<T> result = new DataContainer<>();
        for (T element : uniqueSet) {
            result.add(element);
        }

        return result;
    }

    /**
     * 获取处理器名称
     * 必须包含学生姓名
     * 
     * @return 处理器名称
     */
    @Override
    public String getProcessorName() {
        return "张三的去重处理器"; // 请替换为实际姓名
    }
}
